package projet;

import java.util.HashSet;
import java.util.Iterator;

import exceptions.*;

public class Provider {
	
	// attributs
	private String name;
	private String address;
	private String tel;
	/* ensemble des noms deja utilises */
	private static HashSet<String> Name=new HashSet<String>();
	
	// constructeurs
	/**
	 * Constructeur sans arguments, pour le XML
	 */
	public Provider() {
	}
	
	/**
	 * Constructeur avec arguments
	 */
	public Provider(String n, String a, String t) throws PNameException {
		if (checkName(n)){
			name=n;
			address=a;
			tel=t;
			Name.add(n);
		}
		else
			throw new PNameException();
	}
	
	// methodes
	/** verification de non existance d'un fournisseur ayant le meme nom
	 * 	@param nom a varifier
	 *  @return true si le nom est libre
	*/
	private static Boolean checkName(String name){
		Iterator<String> it=Name.iterator();
		for(;it.hasNext();)
			if(it.next().equals(name))
				return false;
		return true;
	}

	/**
	 * @param name the name to set
	 */
	public void setName(String name) throws PNameException{
		if (checkName(name)) {
			this.name = name;
		}
		else{
			throw new PNameException();
		}
	}

	/**
	 * @param adress the address to set
	 */
	public void setAddress(String adress) {
		this.address = adress;
	}

	/**
	 * @param tel the tel to set
	 */
	public void setTel(String tel) {
		this.tel = tel;
	}
	
	/**
	 * Pour affichage infos workshop
	 */
	public String PrintOnPanel(){
		return "\t\tNom: "+name+"\n\t\t\tAdresse: "+address+"\n\t\t\tNumero de telephone: "+tel+"\n";
	}
	
	/**
	 *@param stbuf la chaine de caractere precedente ou est concatene le texte xml
	 *@return la chaine de caractere resultante
	 */
	public String xml(StringBuffer stbuf){
		stbuf.append(" <Provider>\n");
		stbuf.append("  <name>"+name+"</name>\n");
		stbuf.append("  <address>"+address+"</address>\n");
		stbuf.append("  <tel>"+tel+"</tel>\n");
		stbuf.append(" </Provider>\n");
		return ""+stbuf;
	}
}
